<template>
    <div id="cart" v-show="visible" @click="changeVisible">
        <div class="content" @click.stop="handleClick">
            <div class="title">
            <span>已选商品</span>
            <span @click="clean">清空</span>
        </div>
        <div class="list" v-if="shopcartlist.length !=0">
            <div class="goods" v-for="(item, index) in shopcartlist" :key="index">
                <div class="pic">
                    <img :src='item.picture' alt="">
                </div>
                <div class="text">
                    <div class="name">{{ item.name }}</div>
                    <div class="price">
                        <div>￥{{ item.min_price }}</div>
                        <div>
                            <span @click="request_shopcart_sub(item)">-</span>
                            <span>{{ item.count }}</span>
                            <span @click="request_shopcart_add(item)">+</span>
                        </div>
                    </div>
                </div>
            </div>
        </div>
        <div v-else class="empty">购物车空空如也~</div>
        </div>
    </div>
</template>

<script>
import { mapActions, mapState } from 'vuex';
export default {
    data(){
        return{
            visible:false,
        }
    },
    methods: {
        ...mapActions(['request_clear']),
        ...mapActions(['request_shopcart_add','request_shopcart_sub']),
        clean() {
            //调用vuex中的异步方法，清空购物车
            this.request_clear();
        },
        changeVisible(){
            this.visible = !this.visible;
        },//购物车显示/隐藏
        handleClick(){
            console.log('触发了!');
        }
    },
    computed: {
        ...mapState(['shopcartlist'])
    }
}
</script>

<style lang="scss" scoped>
* {
    margin: 0;
    padding: 0;
}
#cart {
    position: fixed;
    bottom: 0;
    background-color: rgba(255,255,255,0.8);
    width: 100%;
    padding: 10px;
    box-sizing: border-box;
}

.title {
    margin: 10px;
    display: flex;
    align-items: center;
    justify-content: space-between;
}

.title span:nth-child(1) {
    font-weight: bold;
    font-size: 20px;
}

.goods {
    display: flex;
    margin: 0 10px;
    border-bottom: 1px solid #999;
}

.pic {
    margin-right: 20px;
    width: 80px;
}

img {
    width: 100%;
    height:80px;
}

.text {
    flex: 1;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
}

.name {
    margin-top: 5px;
    font-weight: bold;
    font-size: 20px;
}

.price {
    margin-bottom: 5px;
    display: flex;
    justify-content: space-between;
}

.price span {
    display: inline-block;
    width: 14px;
    height: 14px;
    text-align: center;
    line-height: 14px;
    color: white;
    border-radius: 50%;
}

.price span:nth-child(1) {
    color: lightskyblue;
    border: 2px solid lightskyblue;
}

.price span:nth-child(3) {
    border: 2px solid lightskyblue;
    background-color: lightskyblue;
}

.price span:nth-child(2) {
    color: black;
    background-color: white;
}

.empty {
    height: 80px;
    line-height: 80px;
    text-align: center;
    margin-bottom: 60px;
}

.list {
    margin-bottom: 40px;
}
</style>